[アップデート]Amazon SQSでもタグベースのアクセス制御(ABAC)が可能になりました!
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
今日のアップデートでAmazon SQSがABAC(attribute-based access control)に対応し、タグによるアクセス制御が可能になりました。
ざっくりまとめ
- Amazon SQSがABAC(attribute-based access control)に対応した
- つまり、タグベースでのアクセス制御が可能になった
- アプリケーション統合サービスでABACに対応していないのはAmazon SQSだけだった
ABAC(attribute-based access control)とは
ABAC(attribute-based access control)とは、その名の通り属性ベースでアクセス制御を行う仕組みです。AWSでは各IAMリソースや各AWSリソースに付与する"タグ"がこの属性にあたります。
ABACに関しての詳細は下記公式ドキュメントをご参照ください。
また、ABACの設計や運用に関しては下記記事が非常におすすめです。ABACへの理解も深まると思いますので是非ご一読ください。
現在ABACに対応しているAWSサービス
記事執筆時点(2022/11/18)でABACに対応しているAWSサービスは下記ページのEnglish版から確認することが出来ます。日本語版は未対応でした。
日本語版のページと見比べると、今回のアップデートで記載されているアプリケーション統合サービスが全てABACに対応したことが分かりますね。
ちなみに記事執筆時点では英語版のみですが、Amazon SQSのドキュメントにもABACに関する記載がありました。テスト方法も書いてあって非常に丁寧ですね。
やってみた
というわけでAmazon SQSのアクセス制御をやってみます。
今回は簡単に以下のような手順で確認をしてみます。
- valueが異なるタグを付与した2つのキューを作成する
- 片方のキューに対して全てのアクションが行えないIAMポリシーを作成して、確認用のIAMユーザーにアタッチする
- 確認用のユーザーでマネジメントコンソール上からAmazon SQSの一覧を参照し、アクションが拒否されているキューが表示されておらず、もう片方のキューだけが表示されていれば成功
まずはキューを作成します。
今回は environment:prod
, environment:stg
という異なるタグをつけた2つのキューを作成しました。
次に environment:prod
に対して全てのアクションを拒否するIAMポリシーを作成し、確認用のIAMユーザーにアタッチします。
作成したのは下記のIAMポリシー sqs-abac-deny-prod
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessForProd", "Effect": "Deny", "Action": "sqs:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "prod" } } } ] }
確認用のユーザーにはPowerUserAccessも付与済みです。
それでは確認用のユーザーでAmazon SQSのコンソールを確認してみましょう。
はい、確かに拒否したprod-queueは表示されていませんね。
Chromeの開発者ツールで確認したところ、prod-queueに対するgetQueueAttributesが拒否されたようです。
下図はprod-queueに対するPOSTリクエストのペイロードです。このリクエストの結果は403だったので図内左の「sqs」が赤色になっています。すぐ下の「sqs」リクエストはstg-queueに対するものです。
レスポンスはこんな感じ
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>AccessDenied</Code><Message>Access to the resource https://sqs.ap-northeast-1.amazonaws.com/ is denied.</Message><Detail/></Error><RequestId>8555680f-9e19-5683-a79f-33febd090f31</RequestId></ErrorResponse>
まとめ
というわけでSQSもABACに対応しました!めでたい。
使い方は限られますが、アクセス制御の選択肢が増えるのは嬉しいですね。
AWSで一番最初(2004年11月)にβ版が公開されたサービスことAmazon SQSくんがアプリケーション統合サービスの中で一番最後にABAC対応したというのが個人的に面白かったです。
本記事がどなたかのお役に立てれば幸いです。
以上、べこみんでした。